package com.apps.java.javanote02;

import java.net.InetAddress;
import java.net.UnknownHostException;

public class _25网络编程_入门 {
    /**
     * 网络编程
     *
     * 	一、概述：
     * 		1.计算机网络
     * 			是指将地理位置不同的具有独立功能的多台计算机及其外部设备，通过通信连接起来，在网络操作系统，
     * 			网络管理软件及网络通信协议的管理和协调下，实现资源共享和信息传递的计算机系统
     * 		2.网络编程
     * 			在网络通信协议下，实现网络互补的不同计算机上运行的程序间可以进行数据交换。
     *
     * 	二、网络编程三要素
     * 		1.IP地址
     * 			要想让网络中的计算机能够互相通信，必须为每台计算机指定一个标识号，通过这个标识号来指定要接收
     * 			数据的计算机和识别发送的计算机，而IP地址就是这个标识号，也就是设备的标识
     * 		2.端口
     * 			网络的通信，本质上是两个应用程序的通信。每台计算机都有很多的应用程序，那么在网络通信时，如何
     * 			区分这些应用程序呢？如果说IP地址可以唯一标识网络中的设备，那么端口号就可以唯一标识设备中的
     * 			应用程序。也就是应用程序的标识
     * 		3.协议
     * 			通过计算机网络可以使多台计算机实现连接，位于同一个网络中的计算机在进行连接和通信时需要遵守一定
     * 			的规则，这就好比在道路中行驶的汽车一定要遵守交通规则一样。在计算机网络中这些连接和通信的规则被
     * 			称为网络通讯协议，它对数据的传输格式、传输速率、、传输步骤等做了同意规定，通信双方必须同时遵守
     * 			才能完成数据交换。常见的协议有UDP协议和TCP协议。
     *
     * 	三、IP地址
     * 		1.IP地址：是网络中设备的唯一标识
     * 		2.IP地址分为两大类：
     * 			IPv4和IPv6
     * 		3.常用命令：
     *			（1）ipconfig：查看本机IP地址
     *			（2）ping IP地址：检查网络是否连通
     *		4.特殊IP地址：
     *			127.0.0.1：是回送地址，可以表示本机地址，一般用来测试使用
     *
     * 	四、InetAddress的使用
     * 		为了方便我们对IP地址的获取和操作，java提供了一个类InetAddress供我们使用
     * 		InetAddress：此类表示InetAddress协议(IP)地址
     * 		方法名
     * 		static InetAddress getByName(String host)	确定主机名称的IP地址。主机名称可以是机器名称，也可以是IP地址
     * 		String getHostName()						获取此IP地址的主机名
     * 		String getHostAddress()						返回文本显示中的IP地址字符串
     *
     * 	五、端口
     * 		端口：设备上应用程序的唯一标识
     *
     * 		端口号：用两个字节表示的整数，它的取值范围是0-65535。其中0-1023之间的端口号用于一些知名的网络服务和应用，
     * 			    普通的应用程序需要使用1024以上的端口号。如果端口号被另外一个服务器或应用所占用，会导致当前的程序启动失败。
     *
     * 	六、协议
     * 		协议：计算机网络中，连接和通信的规则被称为网络通信协议
     *
     * 		1.UDP协议：
     * 			（1）用户数据报协议(User Datagram Protocol)
     * 			（2）UDP是无连接通信协议，即在数据传输时，数据的发送端和接收端不建立逻辑连接。由于使用UDP协议消耗资源小，通信效率高，所以通常都会用于音频、视频和普通数据的传输。
     * 			（3）但是在使用UDP协议传输数据是，由于DUP的面向无连接性，不能保证数据的完整性，因此在传输重要数据时不建议使用UDP协议。
     *
     * 		2.TCP协议
     * 			（1）传输控制协议(Transmission Control Protocol)
     * 			（2）TCP协议是面向连接的通信协议，即传输数据之前，在发送端和接收端建立逻辑连接，然后再传输数据，
     * 				它提供 两台计算机之间可靠无差错的数据传输。在TCP连接中必须要明确客户端与服务器端，由客户端
     * 				向服务端发送连接请求，每次连接的创建都需要经过“三次握手"
     * 			三次握手：在TCP协议中，在发送数据的准备阶段，客户端与服务器之间的三次交互，以保证连接的可靠
     * 				（1）第一次握手：客户端想服务器端发送链接请求，等待服务器确认
     * 				（2）第二次握手：服务器端向客户端回送一个响应，通知客户端收到了连接请求
     * 				（3）第三次握手：客户端再次想服务器端发送确认信息，确认连接
     * 			由于面向连接的特性，TCP协议可以保证传输数据的安全，所以应用十分广泛。例如上传文件、下载文件、浏览网页等。
     *
     *
     *
     */
    public static void main(String[] args) throws UnknownHostException {

        //static InetAddress getByName(String host)	确定主机名称的IP地址。主机名称可以是机器名称，也可以是IP地址
        //InetAddress address = InetAddress.getByName("DESKTOP-FD87TO8");
        InetAddress address = InetAddress.getByName("192.168.0.111");

        //String getHostName()	获取此IP地址的主机名
        String hostName = address.getHostName();
        System.out.println(hostName);

        //String getHostAddress()返回文本显示中的IP地址字符串
        String hostAddress = address.getHostAddress();
        System.out.println(hostAddress);

    }

}
